package com.mrper.asm.click

import org.objectweb.asm.Opcodes
import org.objectweb.asm.Type

/**
 * @param anchorMethodName lambda内置在那个方法中，methodName
 * @param lambdaProxyMethodName 代理方法：onClick
 * @param lambdaDescriptor 范例：(Ljava/lang/Object;)Landroid/view/View$OnClickListener;
 */
data class ClickMethodTagInfo(
    val anchorMethodName: String,
    val lambdaProxyMethodName: String = "onClick",
    val lambdaDescriptor: String? = null
) {

    /** 获取Lambda方法调用的参数类型集 **/
    val lambdaArgTypes: Array<out Type> get() = Type.getArgumentTypes(lambdaDescriptor)

    /** 获取Lambda方法调用的返回类型 **/
    val lambdaReturnType: Type get() = Type.getReturnType(lambdaDescriptor)

}